# -*- coding: utf-8 -*-
"""
@author:xuyuntao
@time:2021/6/5/005:14:53
@email:xuyuntao@189.cn
"""
import numpy
import time
import datetime
from Generator import antArrChan,awgn
from recognize import quickModArr,recognize,getCharaReco
import matplotlib.pyplot as plt
import numpy.fft as nfft
"""使用本程序进行调制识别的典型示例"""
startTime=time.time() # 开始计时

bytesRate=100  # 码元速率
carrierFreq=1000  # 载波频率
sampleFreq=6000  # 采样速率
seperate=100 # fsk频率间隔
avgTimes=50 # 平均次数

print("--------------生成信号--------------")
constelArr,signalArr,timeSeriesArr=quickModArr("fsk",4,avgTimes=avgTimes,
                                               bytesRate=bytesRate,
                                               carrierFreq=carrierFreq,
                                               sampleFreq=sampleFreq,
                                               seperate=seperate)

print("--------------经过信道--------------")
signalWayArr=numpy.ones(avgTimes,dtype=numpy.float32)*30
constelArr_noise=antArrChan(constelArr,20,signalWayArr) # 阵列天线信道
# constelArr_noise=awgn(constelArr,20) # 普通天线信道
signalArr_noise=antArrChan(signalArr,20,signalWayArr) # 阵列天线信道
# signalArr_noise=awgn(signalArr,20) # 普通天线信道

print("--------------调制识别--------------")
mt=recognize(constelArr_noise,signalArr_noise,timeSeriesArr,carrierFreq,seperate,showMsg=True)
# chara=getCharaReco(constelArr_noise,signalArr_noise,timeSeriesArr,
#                    carrierFreq,1.0,0.1*numpy.pi)
# print("特征值：",chara)

print("--------------识别结果--------------")
print(mt)

print("--------------计算时间--------------")
endTime=time.time()
print("耗时{}s".format(abs(endTime-startTime)))

print("--------------绘制波形--------------")
plt.figure(1)
plt.plot(timeSeriesArr[0,:],numpy.abs(constelArr_noise[0,:]))

plt.figure(2)
plt.plot(timeSeriesArr[0,:],numpy.real(signalArr_noise[0,:]))